package br.com.sgi.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Service;

import br.com.sgi.autentication.UsuarioLogado;
import br.com.sgi.dao.FuncaoDao;
import br.com.sgi.exception.SgiException;
import br.com.sgi.model.Funcao;
import br.com.sgi.service.FuncaoService;
import br.com.sgi.service.UsersService;
import br.com.sgi.util.Mensagem;

@Service("funcaoService")
public class FuncaoServiceImpl implements FuncaoService {
	
	@Autowired
	private FuncaoDao  funcaoDao;
	
	@Autowired
	private UsersService usersService;

	@Override
	public List<Funcao> findAll() {
		return funcaoDao.findAll();
	}

//	@Override
//	public List<Funcao> buscarTodasFuncoes() {
//		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
//		 params.put("coIgreja", usersService.getCoIgrejasPermissao());
//		return funcaoDao.findByNamedParams("buscarTodasFuncoes", params);
//		
//	}
	
	
	@Override
	public List<Funcao> buscarFuncoesPorUser() {
			 
		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
		 params.put("username",UsuarioLogado.getCoUsuario());
		 params.put("coIgreja",UsuarioLogado.getCoIgrejaLocal());
		 return funcaoDao.findByNamedParams("buscarTodasFuncoesPorUsers", params);
			 
		
	}
	
	
	public List<Funcao> buscarFuncoesPorIgreja(Long coIgreja) {
		 
		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
		 params.put("coIgreja",coIgreja);
		 return funcaoDao.findByNamedParams("buscarFuncoesPorIgreja", params);
			 
		
	}

	@Override
	public void atualizar(Funcao funcao) {
		funcaoDao.update(funcao);
		
	}

	@Override
	public void excluir(Long coFuncao) {
			funcaoDao.deleteById(coFuncao);
	}

	@Override
	public void salvar(Funcao funcao) {
		funcao.setInativo(false);
		funcaoDao.save(funcao);
		
	}

	@Override
	public List<Funcao> buscarFuncaoPorFiltros(String nome) {
		 Map<String, Object>  params = new java.util.HashMap<String, Object>();
			
		 String nomePesquisa =  nome != null? "%" + nome.toLowerCase() + "%":"%%";
			 
		 
		 params.put("username",UsuarioLogado.getCoUsuario());
		 params.put("coIgreja",UsuarioLogado.getCoIgrejaLocal());
		 params.put("nome",nomePesquisa);
		
		return funcaoDao.findByNamedParams("buscarFuncoesPorUsers", params);
	}

}
